【krpano】アスペクト比を指定する

パノラマは通常単独で開くとウインドウサイズに100%で調整されますが、アスペクトを指定して、ウインドウサイズが変更されてもアスペクト比を一定に保つ方法。

【使用するファイル】
xmlファイル

【基本コード】16:9に指定
xmlファイル内に以下のコードを記述

<events onresize="fixaspectresize(16,9);"  />

<action name="fixaspectresize">
		div(aspect,%1,%2);
        mul(destwidth,  stagewidth, aspect); 
        copy(destheight, stagewidth); 
		if(destwidth GT stagewidth, div(dwnscale,stagewidth,destwidth), set(dwnscale,1.0) );
		mul(destwidth,  destwidth, dwnscale);
		mul(destheight, destheight, dwnscale);
		if(destheight GT stageheight, div(dwnscale,stageheight,destheight), set(dwnscale,1.0) );
		mul(destwidth,  destwidth, dwnscale);
		mul(destheight, destheight, dwnscale);
		sub(destx, stagewidth,  destwidth);
		sub(desty, stageheight, destheight);
		mul(destx, destx, 0.5);
		mul(desty, desty, 0.5);
		copy(area.x,      destx);
		copy(area.y,      desty);
		copy(area.width,  destwidth);
		copy(area.height, destheight);
	</action>

【解説】
fixaspectresize(16,9)の部分を任意の数字に置き換える。
例;4:3にしたい場合
fixaspectresize(4,3)

 

【実例】

<krpano version="1.16">

<include url="skin/defaultskin.xml" />

<events onresize="fixaspectresize(16,9);" />

<action name="fixaspectresize">
div(aspect,%1,%2);
mul(destwidth, stagewidth, aspect);
copy(destheight, stagewidth);
if(destwidth GT stagewidth, div(dwnscale,stagewidth,destwidth), set(dwnscale,1.0) );
mul(destwidth, destwidth, dwnscale);
mul(destheight, destheight, dwnscale);
if(destheight GT stageheight, div(dwnscale,stageheight,destheight), set(dwnscale,1.0) );
mul(destwidth, destwidth, dwnscale);
mul(destheight, destheight, dwnscale);
sub(destx, stagewidth, destwidth);
sub(desty, stageheight, destheight);
mul(destx, destx, 0.5);
mul(desty, desty, 0.5);
copy(area.x, destx);
copy(area.y, desty);
copy(area.width, destwidth);
copy(area.height, destheight);
</action>

<view hlookat="0" vlookat="0" maxpixelzoom="1.0" fovmax="150" limitview="auto" />
  
<preview url="mukogawa1.tiles/preview.jpg" />

<image type="CUBE" multires="true" tilesize="512" progressive="false">
<level tiledimagewidth="4776" tiledimageheight="4776">
<cube url="mukogawa1.tiles/mres_%s/l4/%0v/l4_%s_%0v_%0h.jpg" />
</level>
<level tiledimagewidth="2388" tiledimageheight="2388">
<cube url="mukogawa1.tiles/mres_%s/l3/%0v/l3_%s_%0v_%0h.jpg" />
</level>
<level tiledimagewidth="1194" tiledimageheight="1194">
<cube url="mukogawa1.tiles/mres_%s/l2/%0v/l2_%s_%0v_%0h.jpg" />
</level>
<level tiledimagewidth="597" tiledimageheight="597">
<cube url="mukogawa1.tiles/mres_%s/l1/%0v/l1_%s_%0v_%0h.jpg" />
</level>
<mobile>
<cube url="mukogawa1.tiles/mobile_%s.jpg" />
</mobile>
</image>

</krpano>